/**
 * Copyright (c) 2018-2028, LookAhead.
 * <p>
 * Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * <p>
 * http://www.gnu.org/licenses/lgpl.html
 * <p>
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.lookahead.parent.common.mvc;

import org.lookahead.parent.apidoc.result.R;
import org.lookahead.parent.common.secure.Userinfo;
import org.lookahead.parent.common.utils.SecureUtil;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

/**
 * La控制器封装类
 *
 * @author LookAhead
 */
public class BaseController {

	/**
	 * ============================     REQUEST    =================================================
	 */

	@Resource
	private HttpServletRequest request;

	/**
	 * 获取request
	 *
	 * @return HttpServletRequest
	 */
	public HttpServletRequest getRequest() {
		return this.request;
	}

	/**
	 * 获取当前用户
	 *
	 * @return Userinfo
	 */
	public Userinfo getUser() {
		return SecureUtil.getUser();
	}

	/** ============================     API_RESULT    =================================================  */

	/**
	 * 返回ApiResult
	 *
	 * @param data 数据
	 * @param <T>  T 泛型标记
	 * @return R
	 */
	public <T> R<T> data(T data) {
		return R.data(data);
	}

	/**
	 * 返回ApiResult
	 *
	 * @param data 数据
	 * @param msg  消息
	 * @param <T>  T 泛型标记
	 * @return R
	 */
	public <T> R<T> data(T data, String msg) {
		return R.data(data, msg);
	}

	/**
	 * 返回ApiResult
	 *
	 * @param data 数据
	 * @param msg  消息
	 * @param code 状态码
	 * @param <T>  T 泛型标记
	 * @return R
	 */
	public <T> R<T> data(T data, String msg, int code) {
		return R.data(code, data, msg);
	}

	/**
	 * 返回ApiResult
	 *
	 * @param msg 消息
	 * @return R
	 */
	public R<String> success(String msg) {
		return R.success(msg);
	}

	/**
	 * 返回ApiResult
	 *
	 * @param msg 消息
	 * @return R
	 */
	public R<String> fail(String msg) {
		return R.fail(msg);
	}

	/**
	 * 返回ApiResult
	 *
	 * @param flag 是否成功
	 * @return R
	 */
	public R<String> status(boolean flag) {
		return R.status(flag);
	}


//	/**============================     FILE    =================================================  */
//
//	/**
//	 * 获取LaFile封装类
//	 *
//	 * @param file 文件
//	 * @return LaFile
//	 */
//	public LaFile getFile(MultipartFile file) {
//		return LaFileUtil.getFile(file);
//	}
//
//	/**
//	 * 获取LaFile封装类
//	 *
//	 * @param file 文件
//	 * @param dir  目录
//	 * @return LaFile
//	 */
//	public LaFile getFile(MultipartFile file, String dir) {
//		return LaFileUtil.getFile(file, dir);
//	}
//
//	/**
//	 * 获取LaFile封装类
//	 *
//	 * @param file        文件
//	 * @param dir         目录
//	 * @param path        路径
//	 * @param virtualPath 虚拟路径
//	 * @return LaFile
//	 */
//	public LaFile getFile(MultipartFile file, String dir, String path, String virtualPath) {
//		return LaFileUtil.getFile(file, dir, path, virtualPath);
//	}
//
//	/**
//	 * 获取LaFile封装类
//	 *
//	 * @param files 文件集合
//	 * @return LaFile
//	 */
//	public List<LaFile> getFiles(List<MultipartFile> files) {
//		return LaFileUtil.getFiles(files);
//	}
//
//	/**
//	 * 获取LaFile封装类
//	 *
//	 * @param files 文件集合
//	 * @param dir   目录
//	 * @return LaFile
//	 */
//	public List<LaFile> getFiles(List<MultipartFile> files, String dir) {
//		return LaFileUtil.getFiles(files, dir);
//	}
//
//	/**
//	 * 获取LaFile封装类
//	 *
//	 * @param files       文件集合
//	 * @param dir         目录
//	 * @param path        目录
//	 * @param virtualPath 虚拟路径
//	 * @return LaFile
//	 */
//	public List<LaFile> getFiles(List<MultipartFile> files, String dir, String path, String virtualPath) {
//		return LaFileUtil.getFiles(files, dir, path, virtualPath);
//	}


}
